Replacing Make with Haskell
نویسنده
چکیده
Most complex software projects are compiled using a build tool (e.g. make), which runs commands in an order satisfying userdefined dependencies. Unfortunately, most build tools require all dependencies to be specified before the build starts. This restriction makes many dependency patterns difficult to express, especially those involving files generated at build time. We show how to eliminate this restriction, allowing additional dependencies to be specified while building. We have implemented our ideas in the Haskell library Shake, and have used Shake to write a complex build system which compiles millions of lines of code.
منابع مشابه
Computer Science at Kent Replacing Unevaluated Parts in the Traces of Functional Programs
In non-strict functional programming languages such as Haskell, it happens often that some parts of a program are not evaluated because their values are not demanded. In practice, those unevaluated parts are often replaced by a placeholder (e.g. _) in order to keep the trace size smaller. In the process of algorithmic debugging, one needs to answer several questions in order to locate a program...
متن کاملLightweight Extensible Records for Haskell
Early versions of Haskell provied only a positional notation to build and take apart user-de ned datatypes. This positional notation is awkward and error-prone when dealing with datatypes that have more than a couple of components, so later versions of Haskell introduced a mechanism for labeled elds that allows components to be set and extracted by name. While this has been useful in practice, ...
متن کاملReplacing Unevaluated Parts in the Traces of Functional Programs
In functional programming languages such as Haskell, it happens often that some parts of a program are not evaluated because their values are not demanded. In practice, those unevaluated parts are often replaced by a placeholder (e.g. _) in order to keep the trace size smaller. For algorithmic debugging, this also makes the questions shorter and clearer. In this paper, we present a formal model...
متن کاملScripting XML with Generic Haskell
A generic program is written once and works on values of many data types. Generic Haskell is a recent extension of the functional programming language Haskell that supports generic programming. This paper discusses how Generic Haskell can be used to implement XML tools whose behaviour depends on the DTD or Schema of the input XML document. Example tools include XML editors, databases, and compr...
متن کاملGeneric Haskell, Specifically
Generic H A SKELL exploits the promising new incarnation of generic programming due to Hinze. Apart from extending the programming language Haskell, Hinze-style polytypism offers a simple approach to defining generic functions which are applicable to types of all kinds. Here we explore a number of simple but significant extensions to Hinze’s ideas which make generic programming both more expres...
متن کامل